#ifndef WIDGET_FUNCE_CONTROL_INDUSTRIAL_H
#define WIDGET_FUNCE_CONTROL_INDUSTRIAL_H

#include <QWidget>
#include <QMediaPlayer>
#include <QNetworkAccessManager>
#include <QNetworkSession>
#include <QMap>
#include <QPair>
#include <QTimer>
#include <QJsonObject>
#include <QListWidgetItem>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget_funcE_Control_industrial; }
QT_END_NAMESPACE

class Widget_funcE_Control_industrial : public QWidget
{
    Q_OBJECT

public:
    Widget_funcE_Control_industrial(QWidget *parent = nullptr);
    ~Widget_funcE_Control_industrial();

private slots:
    // 播放控制按钮槽函数
    void on_playButton_clicked();
    void on_pauseButton_clicked();
    void on_stopButton_clicked();

    // 上一首、下一首按钮
    void onPrevButtonClicked();
    void onNextButtonClicked();

    // 音量变化处理
    void onVolumeChanged(int value);

    // 进度条拖动槽函数
    void on_progressSlider_sliderMoved(int position);

    // 搜索按钮点击槽函数
    void on_searchButton_clicked();

    // 歌曲列表双击槽函数
    void on_songList_itemDoubleClicked(QListWidgetItem *item);

    // 更新播放进度
    void updateProgress(qint64 position);

    // 更新总时长
    void updateDuration(qint64 duration);

    // 处理歌曲播放完成
    void handleSongFinished(QMediaPlayer::State state);

    // 处理媒体状态变化（用于自动播放下一首）
    void handleMediaStatusChanged(QMediaPlayer::MediaStatus status);

    // 显示当前歌词
    void displayCurrentLyric(qint64 position);

    // 处理搜索结果
    void handleSearchReply(QNetworkReply *reply);

    // 处理歌词响应
    void handleLyricReply(QNetworkReply *reply);

    // 处理歌手歌曲响应
    void handleArtistSongsReply(QNetworkReply *reply);

private:
    Ui::Widget_funcE_Control_industrial *ui;
    QMediaPlayer *player;                   // 媒体播放器
    QNetworkAccessManager *networkManager;  // 网络访问管理器
    QNetworkSession *networkSession;        // 网络会话
    QMap<qint64, QString> lyricMap;        // 歌词映射（时间->歌词）
    QList<QPair<QString, QString>> searchResults;  // 搜索结果（歌曲名, ID）
    QMap<QNetworkReply*, QTimer*> replyTimeouts;    // 网络超时映射
    int currentSongIndex;                  // 当前播放歌曲索引

    // 网络请求函数
    void searchMusic(const QString &keyword);          // 搜索音乐
    void playMusicById(const QString &id);             // 按ID播放音乐
    void fetchLyric(const QString &id);                // 获取歌词
    void fetchArtistSongs(const QString &artistId);    // 获取歌手歌曲

    // 播放控制辅助函数
    void playSongByIndex(int index);                   // 按索引播放歌曲

    // 歌词处理函数
    void parseLyric(const QString &lyricText);         // 解析歌词
};
#endif // WIDGET_FUNCE_CONTROL_INDUSTRIAL_H
